#!/bin/bash  
# Get current swap usage for all running processes  
#zhukun 27/05/2011  
SUM=0  
OVERALL=0  
# 拿出/proc目录下所有以数字为名的目录（进程名是数字才是进程，其他如sys,net等存放的是其他信息）
#让进程释放swap的方法只有一个：就是重启该进程。或者等其自动释放。
# 如果进程会自动释放，那么我们就不会写脚本来找他了，找他都是因为他没有自动释放。
# 所以我们要列出占用swap并需要重启的进程
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do  
PID=`echo $DIR | cut -d / -f 3`  
PROGNAME=`ps -p $PID -o comm --no-headers`  
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`  
do  
let SUM=$SUM+$SWAP  
done  
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"  
let OVERALL=$OVERALL+$SUM  
SUM=0  
  
done  
echo "Overall swap used: $OVERALL" 
